This invention relates in general to applications of Digital Signal Processors (DSPs) and more particularly to developing and deploying real-time high performance applications with DSPs.
The convergence of signal processing and I/O and embedded control functions on DSPs is changing DSP software development in two important ways. Fist, increased application complexity is placing greater emphasis on tools that enable designers to quickly produce efficient, reliable, maintainable production code. Equally important, the integration of real-time control and signal processing is placing a greater emphasis on analysis tools that can address increasingly subtle timing problems that are difficult to debug.
DSP program generation and debug tools have improved considerably over the years. But they still fail to address the real-time requirements of signal processing applications, particularly in the latter stages of the development cycle when the designers begin to integrate signal processing algorithms with I/O drivers, control tasks and other system components. Here, software modules that have been coded and tested separately fail in seemingly unpredictable ways when combined into a single program and subjected to live data. Often the culprits are subtle timing errors that arise infrequently, making them difficult to track.
Traditional program debuggers are useful for testing and debugging individual software modules, but tend to mask timing errors. In particular, when standard debuggers halt the program in order to obtain information about it, interrupts are disabled and real-time I/O is blocked. This changes system dynamics and often makes the problem disappear. Many designers supplement their debuggers with hardware tools such as logic analyzers and oscilloscopes in order to enhance real-time analysis capability. Others embed software trace buffers within the target application which collect information as the program executes. But these adhoc techniques are often inadequate, increasing the likelihood that elusive bugs will creep into the production software. Moreover, these techniques are difficult to use with code that has been deployed in production systems, making it nearly impossible to detect bugs once they have reached the production code.
What the DSP industry needs is a standard means of implementing DSP applications, one that enables critical aspects of program behavior to be monitored as the program executes in real time. These instrumentation facilities must be standardized so that third party tools can take advantage of them. They must also be efficient enough to leave in the production software, thereby giving manufacturing test and field diagnostic tools the insight needed to uncover bugs that arise after the software development process has been completed.
To address the need for enhanced real-time analysis, Texas Instruments Inc. has developed a standard embedded infrastructure for its DSPs that provides unique visibility into real-time program execution. Integrated with TI""s Code Composer Studio development environment, this infrastructure consists of two components: 1) DSP/BIOS, a tiny target-based run-time system that captures event and statistical information for the application and uploads it to the host (via a standard physical link such as JTAG) as the application executes in real-time; this DSP/BIOS system is integrated with the target application (C or DSP assembler); 2) Scope, a suite of host-based tools that allows designers to visually trace, monitor, and probe the DSP application as it executes in real time. Even after the Code composer debugger halts the program and assumes control of the target, information already captured through embedded DSP/BIOS instrumentation can provide valuable insight into the sequence of events that led up to the current point of execution.